﻿#pragma once
#ifndef WRWORKMODULE_H
#define WRWORKMODULE_H

#include "WRGlobal.h"
#include "WRWorkDaemon.h"

//声明工作对象类。
class WRWorkObject;

//表示工作模块类。
class WRSOFT_WORKING_COMMON_CLASS WRWorkModule
{
    friend class WRWorkDaemon;

private:
    //工作对象集合。
    WRArray<WRWorkObject*> m_objects;

    //禁止复制构造函数和赋值操作符。
    Q_DISABLE_COPY(WRWorkModule)

protected:
    //设置工作对象集合。
    inline void setObjects(const WRArray<WRWorkObject*>& value)
    {
        m_objects = value;
    }

    //当加载后执行相应的初始工作，默认实现是调用对象的初始方法。
    virtual void onInit(void);
    //当删除前执行相应的清理工作，默认实现是调用对象的清理方法。
    virtual void onFree(void);

    //初始化工作模块。
    WRWorkModule();
    //清理当前对象所占用的相关资源。
    virtual ~WRWorkModule(void);

public:
    //获取工作对象集合。
    inline const WRArray<WRWorkObject*>& objects(void) const
    {
        return m_objects;
    }
};

#endif // WRWORKMODULE_H
